<?php
/**
* Author: Porlock
* Link: www.porlockz.com
* Date: 2018-03-28 09:27:31
* Last Modified time: 2018-03-28 10:13:23
*/

/**
 * 检查表单是否全部填写
 * @param  [type] $form_vars [提交的表单数据]
 * @return [type]            [返回布尔值]
 */
function filled_out($form_vars){
	foreach ($form_vars as $key => $value) {
		if((!isset($key)) || ($value == '')){
			return false;
		}
	}
	return true;
}

/**
 * 校验字符串长度
 * @param  [type] $str    [description]
 * @param  [type] $length [description]
 * @return [type]         [description]
 */
function check_strlength($str,$length){
	$strlen = mb_strlen($str);
	if($strlen > $length){
		return false;
	}
	else{
		return true;
	}
}

/**
 * 检查学号的正确性（可能是10位或11位，分别判断）
 * @param  [type] $value [用户填写的学号]
 * @return [type]        [返回对应的状态值]
 */
// function check_num($value){
// 	if(preg_match('/^[0-9]+$/', $value)){
// 		return true;
// 	}
// 	else{
// 		return false;
// 	}
// }
function check_num($value){
	if(strlen($value) == 10){
		$grade = substr($value,4,2);
		if(preg_match('/^[0-9]+$/', $value)){
			if($grade == '16' or $grade == '17'){
				// 通过校验
				return 1;
			}
			else{
				// 年级不正确
				return 2;
			}
		}
		else{
			// 学号必须都为数字
			return 3;
		}
	}
	else{
		// 学号长度错误
		return 4;
	}
}

/**
 * 检查姓名是否只有汉字
 * @param  [type] $str [description]
 * @return [type]      [description]
 */
function check_chinese($str){
	if(preg_match('/^[\x{4e00}-\x{9fff}]+$/u',$str)){
		// 只有中文
		return true;
	}
	else{
		// 存在其他字符
		return false;
	}
}

/**
 * 检查昵称是否存在额外字符
 * @param  [type] $str [description]
 * @return [type]      [description]
 */
function check_nickname($str){
	if(preg_match('/^[\x{4e00}-\x{9fff}a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)_.]+$/u',$str)){
		// 符合条件
		return true;
	}
	else{
		// 存在其他字符
		return false;
	}
}
/**
 * 校验密码
 * @param  [type] $passwd1 [description]
 * @param  [type] $passwd2 [description]
 * @return [type]          [description]
 */
function check_password($passwd1,$passwd2){
	$passwdLength = strlen($passwd1);
	if($passwd1 != $passwd2){
		// 两次密码不一致
		return 2;
	}elseif($passwdLength < 6 or $passwdLength > 16){
		// 密码长度需要在6~16之间
		return 3;
	}elseif(!preg_match('/^[a-zA-Z0-9_\!\@\#\$\%\^\&\*\(\)]+$/', $passwd1)){
		// 密码中使用的字符只能为a-zA-Z0-9以及_!@#$%^&*()
		return 4;
	}else{
		// 校验通过
		return 1;
	}
}

function check_grade($value){

	$grade = substr($value,4,2);
}
/**
 * 检查邮箱格式是否正确填写
 * @param  [type] $address [用户填写的邮箱]
 * @return [type]          [返回布尔值]
 */
function valid_email($address){
	if (preg_match('/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.+[a-zA-Z0-9\-\.]+$/', $address)){
		return true;
	}
	else{
		return false;
	}
}

/**
 * 生成随机32位字符串（盐值）
 * @return [字符串] [32位盐值]
 */
function getrandstr($length){  
    $str='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
    $randStr = str_shuffle($str);//打乱字符串  
    $rands= substr($randStr,0,$length);//substr(string,start,length);返回字符串的一部分  
    return $rands;  
}

/**
 * 显示提示信息并跳转
 * @param  [type] $msg  [提醒的消息]
 * @param  [type] $type [提醒的图标类型]
 * @param  [type] $href [想要跳转的地方]
 * @return [type]       [description]
 */
function msg_display($msg,$type,$href){
	if($type === 'success'){
		// 笑脸icon
		$icon = 6;
	}
	elseif ($type === 'error') {
		// 不开心icon
		$icon = 5;
	}
	else{
		// 疑问icon
		$icon = 3;
	}
	echo <<< EOT
    <script type="text/javascript" src="../layui/layui.all.js"></script>
    <script type="text/javascript">
        layer.msg('$msg', {
          icon: $icon,
          time: 1000 //2秒关闭（如果不配置，默认是3秒）
        }, function(){
          window.location.href="$href";
        });   
    </script>
EOT;
	die();
}

/**
 * 弹出重要信息，点击后跳转
 * @param  [type] $msg  [提醒的消息]
 * @param  [type] $type [提醒的图标类型]
 * @param  [type] $href [想要跳转的地方]
 * @return [type]       [description]
 */
function msg_alert($msg,$type,$href){
	if($type === 'success'){
		// 笑脸icon
		$icon = 6;
	}
	elseif ($type === 'error') {
		// 不开心icon
		$icon = 5;
	}
	else{
		// 疑问icon
		$icon = 3;
	}
	echo <<< EOT
    <script type="text/javascript" src="../layui/layui.all.js"></script>
    <script type="text/javascript">
        layer.alert('$msg', {
          icon: $icon,
        }, function(){
          window.location.href="$href";
        });   
    </script>
EOT;
	die();
}

/**
 * 注册
 * @param  [type] $dbh      [数据库对象]
 * @param  [type] $uid      [学号]
 * @param  [type] $name     [姓名]
 * @param  [type] $nickname [昵称]
 * @param  [type] $email    [邮箱]
 * @param  [type] $salt     [盐值]
 * @param  [type] $password [加密后的密码]
 * @return [type]           [description]
 */
function register($dbh,$uid,$name,$nickname,$email,$salt,$password){
	$register_insert = "INSERT INTO `user` (`uid`,`name`,`nickname`,`email`,`salt`,`passwd_hash`) VALUES (:uid,:name,:nickname,:email,:salt,:passwd_hash)";
    $sth_register = $dbh->prepare($register_insert);
    $sth_register -> bindParam(":uid",$uid);
    $sth_register -> bindParam(":name",$name);
    $sth_register -> bindParam(":nickname",$nickname);
    $sth_register -> bindParam(":email",$email);
    $sth_register -> bindParam(":salt",$salt);
    $sth_register -> bindParam(":passwd_hash",$password);
    $sth_register -> execute();
}
?>